v8.1.14: Technical Debt Cleanup & Stabilization#12
Merged
cct08311github merged 9 commits intodotnet8from Mar 4, 2026
Merged
Conversation
src/ library: - WTMContext: add RefreshTokenAsync(), mark RefreshToken() [Obsolete] - WtmMiddleware: await ReadToEndAsync(), await CallAPI() - _WorkflowApiController: 5 sync IActionResult → async Task<IActionResult> - _FrameworkController: GetPagingData async, inline callbacks use GetAwaiter() - TagHelpers: FlowInfoTagHelper, FieldSetTagHelper, SelectorTagHelper → Process() → ProcessAsync() to allow await GetChildContentAsync() - ApproveActivity: interface+base-class-constrained → GetAwaiter().GetResult() - SessionExtension, FrameworkServiceExtension: startup → GetAwaiter().GetResult() demo/ projects (VueDemo, Vue3Demo, ReactDemo, BlazorDemo, Demo): - All AccountController async methods: await RedirectCall() - All DataPrivilege/FrameworkGroup/FrameworkRole/FrameworkUser controllers: sync IActionResult → async, await RedirectCall() / await CallAPI() - FrameworkGroupController/FrameworkRoleController: Import → async - LoginController: ChangePassword → async, Logout await CallAPI - ViewModels (FrameworkMenuVM, FrameworkGroupVM, FrameworkRoleVM, FrameworkTenantVM, DataPrivilegeVM, DataPrivilegeListVM, FrameworkRoleMDVM, FrameworkRoleMDVM2): .Wait() → .GetAwaiter().GetResult() Closes #8 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…EPS-1] EF Core: 8.0.3 → 8.0.22 Microsoft.AspNetCore.*: 8.0.3 → 8.0.22 Microsoft.Extensions.*: 8.0.0 → 8.0.1 / 8.0.3 → 8.0.22 Npgsql: 8.0.2 → 8.0.11 Oracle.EF: 8.21.121 → 8.23.70 Pomelo: 8.0.2 → 8.0.3 Quartz: 3.8.1 → 3.16.0 Elsa 2.x: 2.14.1 → 2.15.2 Swashbuckle: 6.5.0 → 6.6.2 No major version boundary crossings. Closes #9 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Consistent indentation, charset, line endings across all file types - C# style rules as suggestions (non-breaking) - Naming conventions for private fields (_camelCase) - Expression body, pattern matching, null checking preferences - Replaces minimal original file with comprehensive ruleset Part of #10 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add <Nullable>enable</Nullable> to WalkingTec.Mvvm.Core.csproj - Add InternalsVisibleTo for test project (prep for TEST-1) - Properly annotate Tier-1 security-critical files: * PasswordHashHelper.cs: string? params (callers may pass null) * RefreshTokenEntity.cs: required props = null!, optional props = string? * ITokenService.cs: optional params = string? - Add #nullable disable to 168 legacy files for future incremental cleanup Closes #10 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ST-1] - New xUnit project: WalkingTec.Mvvm.Core.Tests (in src/, nested under src folder) - 12 tests for PasswordHashHelper (hash, verify, MD5 migration flow) - 5 tests for RefreshTokenEntity (active/expired/revoked states) - Dependencies: FluentAssertions 6.12.2, Moq 4.20.72, EF InMemory 8.0.22 - Added InternalsVisibleTo in Core.csproj (allows testing ComputeMD5) - Added project to solution under src folder Closes #11 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Named test step for clarity - Add --logger trx to dotnet test - Upload test-results.trx as artifact (always, even on failure) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Elsa 2.15.2 introduced a transitive dependency on Microsoft.AspNetCore.DataProtection >= 9.0.1 (a .NET 9 package), causing NU1605 downgrade errors across all consumer projects. Revert all Elsa packages to 2.14.1 which correctly targets net8. Also revert Microsoft.Extensions.Configuration.* and Microsoft.Extensions.Logging.* from 8.0.1 to 8.0.0 — the 8.0.1 versions do not exist on NuGet (jumped directly to 9.0.0). Microsoft.Extensions.Hosting.Abstractions 8.0.1 is confirmed valid. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…YNC-1] ASYNC-1 made API controller methods async (Task<IActionResult>). Demo MVC controllers that called these methods directly via direct instantiation must now await the call before casting to OkObjectResult. Affected files: - FrameworkUserController: GetUserById, GetFrameworkRoles, GetFrameworkGroups - DataPrivilegeController: GetUserGroups - FrameworkGroupController: GetParents Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Search() now returns Task<IActionResult> after ASYNC-1. Use .Result in the existing sync MSTest method to unblock compile. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.editorconfigwith C# naming conventions, formatting rules, and style preferences (replaces minimal original).<Nullable>enable</Nullable>in Core project. Tier-1 security files (PasswordHashHelper,RefreshTokenEntity,ITokenService) properly annotated. Legacy files suppressed with#nullable disablefor incremental future cleanup.WalkingTec.Mvvm.Core.Testswith 17 tests coveringPasswordHashHelper(hash, verify, MD5 migration flow) andRefreshTokenEntity(active/expired/revoked states).Test plan
Commits
07711893fix(deps): upgrade packages [DEPS-1] — Closes [DEPS] Full dependency audit and update #932aeb681chore: .editorconfig [QUALITY-1] — Part of [QUALITY] Add .editorconfig and enable Nullable Reference Types #10df0279f7chore: Nullable Reference Types [QUALITY-2] — Closes [QUALITY] Add .editorconfig and enable Nullable Reference Types #107d2c5d2etest: unit test project [TEST-1] — Closes [TEST] Establish unit test project and 100% coverage on security-critical code #112e1527ecci: test artifact upload [CI-UPDATE]🤖 Generated with Claude Code